Time-sensitive or real-time data such as video data, audio data, accelerometry data, sensor data (e.g. electrocardiogram data), etc. is typically streamed using an unreliable networking protocol. Unreliable networking protocols assume that error checking and correction are either not necessary or are performed by another layer of the software stack such as the application receiving the data. Thus, data sent via an unreliable networking protocol may arrive out of order, appear duplicated, or go missing without notice. Time-sensitive or real-time applications often use unreliable networking protocols because in such applications data that is lost, missing or discarded is preferable to using data that has arrived late or otherwise delayed. In other applications (e.g. downloading a file) receiving delayed data is preferable to lost, missing or discarded data. As a result, such applications tend to use a reliable networking protocol to ensure data delivery despite incurring additional latency and overhead.